#include<bits/stdc++.h>
#define ll long long
using namespace std;

int n,m,q;
int x[500005],y[500005];
int num[1500005],cnt;
bool bd[3005][3005];

inline bool qin(int a,int b){return 1<=a&&a<=n&&1<=b&&b<=m;}

inline bool query(int a,int b)
{
    if(!qin(a,b)||bd[a][b])
        return 0;
    int sum=0;
    sum+=qin(a-1,b)&&bd[a-1][b];
    sum+=qin(a+1,b)&&bd[a+1][b];
    sum+=qin(a,b-1)&&bd[a][b-1];
    sum+=qin(a,b+1)&&bd[a][b+1];
    return sum>=2;
}

inline void add(int a,int b)
{
    if(bd[a][b])
        return;

    cnt++;
    bd[a][b]=1;
    
    if(query(a-1,b))
        add(a-1,b);
    if(query(a+1,b))
        add(a+1,b);
    if(query(a,b-1))
        add(a,b-1);
    if(query(a,b+1))
        add(a,b+1);
}

int main()
{
    freopen("grid.in","r",stdin);
    freopen("grid.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    
    cin>>n>>m>>q;

    for(int i=1;i<=q;i++)
    {
        cin>>x[i]>>y[i];
        num[++cnt]=x[i]-1;
        num[++cnt]=x[i];
        num[++cnt]=x[i]+1;
    }

    sort(num+1,num+cnt+1);
    n=unique(num+1,num+cnt+1)-num-1;
    for(int i=1;i<=q;i++)
        x[i]=lower_bound(num+1,num+n+1,x[i])-num;

    cnt=0;
    for(int i=1;i<=q;i++)
    {
        num[++cnt]=y[i]-1;
        num[++cnt]=y[i];
        num[++cnt]=y[i]+1;
    }

    sort(num+1,num+cnt+1);
    m=unique(num+1,num+cnt+1)-num-1;
    for(int i=1;i<=q;i++)
        y[i]=lower_bound(num+1,num+m+1,y[i])-num;

    cnt=0;
    for(int i=1;i<=q;i++)
        add(x[i],y[i]);
    cout<<cnt<<'\n';

    return 0;
}